#include <bits/stdc++.h>
// 2025/02/02
// tag: 
// Author: Zhang Muen
using namespace std;

int n;
bitset<5001> dir;

int help(int k){
    int ans = 0;
    // 初始化标志位为false，表示当前点的方向不需要改变
    bool flag = false;
    // 创建一个队列，用于存储需要改变方向的点的位置
    queue<int> q;
    for (int i = 1; i <= n; i++){
        // 如果队列不为空且队首元素等于当前点的位置，则弹出队首元素并取反标志位
        if (!q.empty() && q.front() == i)
            q.pop(), flag = !flag;
        // 如果当前点的方向与标志位不同，则将当前点的位置加上步长k后入队，并取反标志位，操作次数加1
        if (dir[i] ^ flag == 0)
            q.push(i + k), flag = !flag, ans++;
    }
    // 如果队列不为空且队首元素不等于n+1或者队列中元素个数大于1，则返回INT_MAX，表示无法调整为一致
    if (!q.empty() && (q.front() != n + 1 || q.size() > 1))
        return INT_MAX;
    // 返回最小操作次数
    return ans;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n;
    // 定义一个字符变量direction，用于存储每个点的方向
    char direction;
    // 遍历每个点，读取其方向并存储在bitset中
    for (int i = 1; i <= n; i++){
        cin >> direction;
        if (direction == 'B')
            dir[i] = 0;
        else
            dir[i] = 1;
    }
    // 初始化最小操作次数为INT_MAX，初始步长为0
    int ans = INT_MAX, k = 0;
    // 遍历所有可能的步长
    for (int i = 1; i <= n; i++){
        // 调用help函数计算当前步长下的操作次数
        int p = help(i);
        if (p < ans)
            ans = p, k = i;
    }
    cout << k << " " << ans << endl;
    return 0;
}